//
//  Copyright (c) 2008 Bogozma Electronics Inc.
//
//  @ Project : Bogozma Software Development Kit (SDK)
//  @ File Name : CBgaLinkoo.h
//  @ Date : 6/12/2008
//  @ Author : Michael Gozzo (OIQ# 140438)
//



#if !defined(_CBGALINKOO_H)
#define _CBGALINKOO_H

#include "bgaos.h"
#include "CBgaDevice.h"
#include "CBgaSerialDevice.h"

#if BCL_USE_GNU
#pragma GCC visibility push(default)
#endif

namespace BogozmaCommunicationLibrary
   {
   class BGACOMLIB_EXPORT CBgaLinkoo : public CBgaSerialDevice
      {
      public:
         virtual void SetBaudRate(enumBaudRate BaudToSet) = 0;
         virtual enumBaudRate GetBaudRate() = 0;
         virtual void SetParity(enumParity ParityToSet) = 0;
         virtual enumParity GetParity() = 0;
         virtual void SetDataBits(enumDataBits DataBitsToSet) = 0;
         virtual enumDataBits GetDataBits() = 0;
         virtual void SetFlowControl(enumFlowControl FlowControlToSet) = 0;
         virtual enumFlowControl GetFlowControl() = 0;

         virtual void ReadData(void* ReadBuffer, size_t BufferSize) = 0;
         virtual void WriteData(void* WriteBuffer, size_t BufferSize) = 0;

         virtual void OpenDevice() = 0;
         virtual void OpenDevice(char* Password) = 0;
         virtual void CloseDevice() = 0;
         virtual bool IsOpen() = 0;
         virtual bool IsAvailable() = 0;
         virtual char* GetName(char* UserNamePtr, size_t BufferSize) = 0;
         virtual enumDeviceType GetType() = 0;

         //From CBgaDevice
         virtual CBgaNetworkInfo* GetNetworkInfo() = 0;
      };
   }
   

#if BCL_USE_GNU
#pragma GCC visibility pop
#endif
   
#endif  //_CBGALINKOO_H
